package exception;

/*
  java 异常处理机制
  java中所有的异常的顶级超类是:Throwable
  而Throwable下面定义了两个子类型:Error 和 Exception
  Error:表示错误，不可挽回的，通常描述的都是系统错误
  Exception:表示异常，可在程序运行过程中被处理掉的
  我们通常仅在异常处理机制中处理Exception
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("程序开始了");
        try {//try语句块不能单独写，后面必须跟上catch或finally块
//            String str= null;
//            System.out.println(str.length());//jvm会实例化对应异常抛出
            String str = "";
            System.out.println(str.charAt(0));
//        }catch (NullPointerException e){//e就接受（捕获到）24行这里出现的空指针异常
//            //针对该异常的解决办法（B计划），实际要结合业务需求去处理
//            System.out.println("出现了空指针，并解决了");
//        }catch (StringIndexOutOfBoundsException e){
//            System.out.println("出现了字符串下标越界，并解决了");
//        }
        }catch (NullPointerException | StringIndexOutOfBoundsException e){
            System.out.println("出现了空指针或者字符串下标越界，并解决了");
        }catch (Exception e){
            System.out.println("通用解决办法");
        }

        System.out.println("程序结束了");
    }
}
